/*
 * @Author: 戚功民 
 * @Date: 2020-11-18 11:28:39 
 * @Last Modified by: 戚功民
 * @Last Modified time: 2020-11-19 08:23:26
 */


import ajax from '@/ajax/Category.js'


// 状态管理器主要存放静态数据的地方
const state = {
    categories : []
}

//计算state保存数据的地方，相当于vue组件中的computed 
const getters = {

    // 此处的state就是上下文中的staten对像
     categories: state => {
        return state.categories
     }
}

/* vuex同步方法,定义的地方，相当于vue组价中的methods
   mutation可以直接修改上下文中state对象的数据，其他的对象参数都不行
*/
const mutations = {
     /* 此处的state就是上下文中的state json对像
        categories是调用mutation对象中函数方法时传入的参数
     */
    setCategories(state,categories) {
        state.categories = categories
    }
}

/*
   1.actions是vuex中异步方法执行的地方
   2.主要执行步奏是，获取到异步数据，再执行mutations中的方法，修改state中的静态数据
   3.commit是同步操作，分法执行mutations中的方法
   4.dispatch是异步方法，分法执行actions中的方法
*/

const actions = {
    
    getCategories ({commit}) {
        ajax.getCategories(categories => {
            commit("setCategories",categories)
        })
    }
}



export default {
    /*
    1.namespace是为了解决vuex中store文件夹下index引入不同模块之间的冲突
    2.namespace为true后辅助函数使用需要加入对应地的模块名称
*/
    namespaced: true,
    state,
    getters,
    mutations,
    actions
}
